﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using LibXmlSocketTestClient.WindowsPhone.Resources;
using System.Xml.Linq;
using XmlSockets;

namespace LibXmlSocketTestClient.WindowsPhone
{
    public partial class MainPage : PhoneApplicationPage
    {
        // コンストラクター
        public MainPage()
        {
            InitializeComponent();
            _client = new ClientXmlSocket();
            _client.Received += _received;
            _client.Closed += _closed;
            // ApplicationBar をローカライズするためのサンプル コード
            //BuildLocalizedApplicationBar();
        }

        // ローカライズされた ApplicationBar を作成するためのサンプル コード
        //private void BuildLocalizedApplicationBar()
        //{
        //    // ページの ApplicationBar を ApplicationBar の新しいインスタンスに設定します。
        //    ApplicationBar = new ApplicationBar();

        //    // 新しいボタンを作成し、テキスト値を AppResources のローカライズされた文字列に設定します。
        //    ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
        //    appBarButton.Text = AppResources.AppBarButtonText;
        //    ApplicationBar.Buttons.Add(appBarButton);

        //    // AppResources のローカライズされた文字列で、新しいメニュー項目を作成します。
        //    ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
        //    ApplicationBar.MenuItems.Add(appBarMenuItem);
        //}


        



        

       

        private async void _sendAsync()
        {
            var requestMessage = new XElement("thread");
            requestMessage.SetAttributeValue("thread", this.ThreadText.Text);
            requestMessage.SetAttributeValue("res_from", "-200");
            requestMessage.SetAttributeValue("version", "20061206");
            requestMessage.SetAttributeValue("scores", "1");
            await _client.SendAsync(requestMessage);
        }

        private void _showMessage(string message)
        {
            this.MessageView.Text += message + "\r\n";
        }

        private void MainWindow_Closed(object sender, EventArgs e)
        {
            _client.Dispose();
        }

        private void _closed(ClientXmlSocketCloseEventArgs args)
        {
            _showMessage("切断しました");
        }

        private void _received(ClientXmlSocketReceiveEventArgs args)
        {
            string showmMessage = "";

            foreach (var message in args.Messages)
            {
                showmMessage += message.ToString() + "\r\n";
            }




            _showMessage(showmMessage);
        }

        private ClientXmlSocket _client;

        private async void ConnectionButton_Click(object sender, RoutedEventArgs e)
        {
            await _client.ConnectAsync(this.IPText.Text, int.Parse(this.PortText.Text));
            _showMessage("接続開始");
        }



        private void CloseButton_Click(object sender, RoutedEventArgs e)
        {
            _client.Close();
        }

        private void MessageRequestButton_Click(object sender, RoutedEventArgs e)
        {
            _sendAsync();
        }


        

    }
}